草庐IT

javascript var 与这个

全部标签

c++ - 为什么这个类型转换模棱两可?

我有一个我编写的类,它执行类型删除。公共(public)接口(interface)是:templatevalue(constT&t);value(value&&v);templateoperatorT()const;当我从std::string创建一个值实例时,我没有遇到任何问题,一切都按预期进行。当我尝试使用static_cast(val)恢复std::string时,其中val是持有std::string的值实例,我从VS2012得到以下错误:errorC2440:'static_cast':cannotconvertfrom'value'tostd::string'Noconst

c++ - 为什么这个 c++ 有效? (具有相同名称的变量)

好吧,我想知道为什么这段代码有效,我刚刚意识到我在同一范围内有两个同名的变量。我正在使用g++(gcc4.4)。for(intk=0;k 最佳答案 内部for循环中的k隐藏(或隐藏)外部for循环中的k。您可以在不同范围内声明多个具有相同名称的变量。一个非常简单的例子如下:intmain(){inta;//'a'referstotheintuntilitisshadowedoritsblockends{floata;//'a'referstothefloatuntiltheendofthisblock}//'a'nowreferst

C++学习头文件。这个分号是怎么回事?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我正在学习制作头文件。这是我的代码(三个独立的文件)//Main.cpp#include#include"functions.h";usingnamespacestd;intmain(){cout代码编译并运行,但困扰我的部分在Main.cpp中。“functions.h”下方和“usingnamespace”上方有分号。我把它放在那里是因为visuals

c++ - 这个函数的参数在哪里?

void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);返回类型是void*,proto_type是函数名?或者这是指向函数的指针?哪些是参数:(longint,char*b)或这个(constchar*b,unsignedshortintd)请解释一下这个函数是如何工作的。 最佳答案 void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);这是一个函数声明。函数名为proto_ty

c++ - 如何在 C++ 中删除这个二维数组

在简单的一维数组中:node*nodes=newnode[MAX_NODES];删除方式:delete[]nodes;删除数组中分配的所有节点。但在这种情况下:float(*buildingArray)[3]=newfloat[10][3];此语句是否使buildingArray成为3个浮点指针的单维数组?这是释放行:delete[]buildingArray;上面的释放是否删除数组,但我怀疑它是否会删除它的引用? 最佳答案 Doestheabovede-allocationdeletethearray?是的。只需遵循规则:您需要调

c++ - 有史以来最简单的互斥量。这个例子行得通吗?它是线程安全的吗?

我想问一下用于多线程的最简单的Mutex方法。以下代码是线程安全的(quick-n-dirty)吗?classmyclass{boollocked;vectorvals;myclass();voidadd(doubleval);};voidmyclass::add(doubleval){if(!locked){this->locked=1;this->vals.push_back(val);this->locked=0;}else{this->add(val);}}intmain(){myclasscls;//startparallelismcls.add(static_cast(ra

c++ - 这个 for 循环实际上是如何工作的?

阅读一些主题我找到了这段代码,我想知道它是如何工作的,因为它主要是:52代码:staticinta=7;inttest(){returna--;}intmain(){for(test();test();test()){cout 最佳答案 操作顺序,如图所示:a在启动时全局初始化。到7首先命中for循环的初始化器,test()将a递减为6,然后返回先前的值(7),该值将被忽略。for循环的测试用例命中,test()将a递减为5,然后返回通过非零测试的先验值(6)因此for循环可以继续。cout语句;test()将a递减为4,返回发送到

c++ - 为什么这个 static_cast 是不允许的?

我有一个A类对象,我想将其分配到自定义堆栈对象上。为此,我只需将堆栈指针移动与对象大小相同的字节数并返回其先前的值:classA:publicB{};//Bisfromaprecompiledlibraryclassstack{public:stack(void):_top(&_storage[0]){}templateinlineT*push(void){T*ptr=static_cast(_top);_top+=sizeof(T);returnptr;}//...private:char_storage[1024];char*_top;};stack_stack;intmain(i

c++ - 为什么这个简单的逻辑不起作用?

我只是想不通为什么while循环中的这个简单逻辑不起作用。基本上这个函数的作用是,它接受一个参数,并在while循环中检查它是否不是"is"或“否”,然后继续循环。voidgetAnswer(stringanswer){stringnewAnswer="";newAnswer=answer;while(newAnswer!="Yes"||newAnswer!="yes"||newAnswer!="Y"||newAnswer!="y"||newAnswer!="No"||newAnswer!="no"){cout>newAnswer;}if(newAnswer=="Yes"||newAn

c++ - 为什么这个C++程序会导致内存泄漏?

考虑以下代码:char*str1=newchar[30];char*str2=newchar[40];strcpy(str1,"Memoryleak");str2=str1;delete[]str2;delete[]str1;为什么上面的程序会导致内存泄漏?我该如何避免这种情况? 最佳答案 以上不仅会导致内存泄漏,还会导致内存泄漏。它会导致未定义的行为,这要糟糕得多。问题出在最后三行:str2=str1;delete[]str2;delete[]str1;如果我们忽略第一行,那么最后两行会正确回收此函数中分配的所有内存。但是,第一行